Method, apparatus and system for handling non-posted memory write transactions in a fabric

ABSTRACT

In one embodiment, a system on chip includes a first endpoint to issue a non-posted memory write transaction to a memory and a Peripheral Component Interconnect (PCI)-based fabric including control logic to direct the non-posted memory write transaction to the memory, receive a completion for the non-posted memory write transaction from the memory and route the completion to the first endpoint. Other embodiments are described and claimed.

TECHNICAL FIELD

Embodiments relate to communications and more particularly tocommunications in an integrated circuit.

BACKGROUND

Mainstream processor chips, both in high performance and low powersegments, are increasingly integrating additional functionality such asgraphics, display engines, security engines, and so forth. Such designsare highly segmented due to varying requirements from the server,desktop, mobile, embedded, ultra-mobile and mobile Internet devicesegments. Different markets seek to use single chip system-on-chip (SoC)solutions that combine at least some of processor cores, memorycontrollers, input/output controllers and other segment specificacceleration elements onto a single chip. However, designs thataccumulate these features are slow to emerge due to the difficulty ofintegrating different intellectual property (IP) blocks on a single die.This is especially so, as IP blocks can have various requirements anddesign uniqueness, and can require many specialized wires, communicationprotocols and so forth to enable their incorporation into an SoC. As aresult, each SoC or other advanced semiconductor device that isdeveloped requires a great amount of design complexity and customizationto incorporate different IP blocks into a single device. This is so, asa given IP block typically needs to be re-designed to accommodateinterface and signaling requirements of a given SoC.

Many computer systems and even integrated circuits within such systemsincorporate Peripheral Component Interconnect (PCI) technologies thatprovide rules for communication of transactions and various protocolsfor handling data flows within the system. In a PCI-orderedinterconnect, producer-consumer (P/C) flows are handled with a couple ofwell-defined semantics. Most notably, these semantics include: (1)writes from a producer are always posted, in that such writes areconsidered complete when sent by the source without receipt of anexpress acknowledgement (also referred to as a fire and forgettransaction); and (2) the system ensures that writes have been handledto the point of global observation before a consumer consumes the data.These semantics enable functional correctness of a PCI-orderedinterconnect. While this arrangement works well, difficulties arise whennon-PCI-based devices are incorporated into systems with PCI-orderedinterconnects, in that substantial complexity may arise in ensuringthese semantics are met.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a basic interconnect architecture inaccordance with an embodiment of the present invention.

FIG. 2 is a block diagram of further details of an interconnectarchitecture in accordance with an embodiment of the present invention.

FIG. 3 is a high level block diagram of a SoC in accordance with anembodiment of the present invention.

FIG. 4 is a block diagram of a system in accordance with anotherembodiment of the present invention.

FIG. 5 is a block diagram of a sideband interconnection in accordancewith an embodiment of the present invention.

FIG. 6 is a block diagram of details of signaling available for asideband interface in accordance with an embodiment of the presentinvention

FIG. 7 is a flow diagram of a method in accordance with an embodiment ofthe present invention.

FIG. 8 is a flow diagram of a method in accordance with anotherembodiment of the present invention.

FIG. 9 is a block diagram of an example system with which embodimentsmay be used.

FIG. 10 is a block diagram of a representative computer system.

FIG. 11 is a block diagram of a system in accordance with an embodimentof the present invention.

DETAILED DESCRIPTION

In various embodiments, integrated circuits such as processors, systemson chip (SoC), among others that implement communication techniques inaccordance with a Peripheral Component Interconnect (PCI)-based protocolare configured to enable additional transaction mechanisms, namelynon-posted memory write transactions, within these devices. This is so,although no PCI specification supports the concept of a non-postedmemory write transaction. Note that in embodiments described herein,certain fabrics and devices such as endpoints within an SoC may beconfigured to accommodate and handle these non-posted memory writetransactions. However, many other components such as other fabricinstantiations, endpoints and other devices of a legacy variety may notbe configured for handling these transactions. Understand that anon-posted memory write transaction is a transaction that is sent by asource and destined to a destination memory or other storage that is notconsidered complete by the source until the source receives anacknowledgement, e.g., in the form of a completion that does not includedata, to indicate that the data of the transaction has been globallyobserved.

Note that as used herein, the terms “PCI,” “PCI-based” or“PCI-compliant” refer to components such as devices, fabrics, endpointsand so forth that are compatible with one or more PCI specificationsincluding, as examples, a PCI Local Bus Specification Rev. 3.0 (datedFeb. 3, 2004) and/or a PCI-Express (PCIe) Base Specification, Rev. 3.1a(dated Dec. 7, 2015), and support transaction ordering rules of such PCIspecifications. And more specifically, such PCI-compliant fabrics arethus “PCI-ordered fabrics.” In turn as used herein, the terms “non-PCI,”“non-PCI-based” or “non-PCI compliant” are used to refer to componentsthat are not compatible with such specifications and do not comply withordering rules of such specifications. And thus more specifically, thesenon-PCI fabrics are not PCI-ordered fabrics. As examples, non-PCIdevices may include devices that are designed for compatibility withother communication protocols including advanced microcontroller busarchitecture (AMBA)-type protocols such as an advanced extensibleinterface (AXI), an open core protocol (OCP) or other proprietary ornon-proprietary protocols. For example, fabrics of vendors such asArteris and Sonics may be considered to be non-PCI fabrics.

In various embodiments, a PCI-ordered system is configured to supportP/C ordering across multiple channels by enabling a non-posted writetransaction type to be supported on a primary interface of a fabric. Thenon-posted write transaction complies with all PCI ordering rules andprovides explicit acknowledgement semantics (e.g., via a completionwithout data) required by a non-posted write transaction. Such anon-posted write transaction provides scalability of ensuring P/Ccorrectness across all channels in a PCI-ordered fabric, without anyadditional capabilities in the rest of the system. Understand also thatnon-posted memory transactions described herein are for bulk datawrites. Such write transactions stand in contrast to input/output write(IOWr) and configuration write (CfgWr) transactions that are non-posted.However, these other non-posted transactions fundamentally writedifferent spaces (not memory) and are limited to a single double word(DW) in size. Memory transactions as described herein, in contrast, canbe up to the full PCI maximum payload size of 1024DW.

By supporting non-posted write transaction semantics within a primaryinterface of a fabric, non-posted write transactions from anon-PCI-based, intellectual property (IP) logic can be mapped directlyto a non-posted write on the primary interface. If the non-PCI IP logicuses multiple channels, all such channels are mapped 1:1 on the primaryinterface, without any additional custom changes. As a result,non-PCI-based IP logics may be integrated natively and naturally into afabric that supports non-posted writes. Non-posted write transactionsmay also simplify P/C handshaking for traditional PCI-compliant IPlogics that use multiple channels for quality of service (QoS). In someembodiments, supporting this non-posted write semantic in a fabricsimplifies the overall logic complexity by eliminating customcross-channel handshaking techniques.

Embodiments can be used in many different types of systems. As examples,implementations described herein may be used in connection withsemiconductor devices such as processors or other semiconductor devicesthat can be fabricated on a single semiconductor die. In particularimplementations, the device may be a system-on-chip (SoC) or otheradvanced processor or chipset that includes various homogeneous and/orheterogeneous processing agents, and additional components such asnetworking components, e.g., routers, controllers, bridge devices,devices, memories and so forth.

Some implementations may be used in a semiconductor device that isdesigned according to a given specification such as an integratedon-chip system fabric (IOSF) specification issued by a semiconductormanufacturer such as Intel Corporation to provide a standardized on-dieinterconnect protocol for attaching intellectual property (IP) blockswithin a chip, including a SoC. Such IP blocks can be of varying types,including general-purpose processors such as in-order or out-of-ordercores, fixed function units, graphics processors, IO controllers,display controllers, media processors among many others. Bystandardizing an interconnect protocol, a framework is thus realized fora broad use of IP agents in different types of chips. Accordingly, notonly can the semiconductor manufacturer efficiently design differenttypes of chips across a wide variety of customer segments, it can also,via the specification, enable third parties to design logic such as IPagents to be incorporated in such chips. And furthermore, by providingmultiple options for many facets of the interconnect protocol, reuse ofdesigns is efficiently accommodated. Although embodiments are describedherein in connection with this IOSF specification, understand the scopeof the present invention is not limited in this regard and embodimentscan be used in many different types of systems.

Referring now to FIG. 1, shown is a block diagram of a basicinterconnect architecture in accordance with an embodiment of thepresent invention. As shown in FIG. 1, system 10 may be a portion of asystem-on-chip or any other semiconductor device such as a highlyintegrated processor complex or an integrated IO hub, and includes afabric 20 that acts as an interconnect between various components. Inthe implementation shown, these components include IP agents 30 and 40,which can be independent IP blocks to provide various functionality suchas compute capabilities, graphics capabilities, media processingcapabilities and so forth. These IP agents are thus IP blocks or logicaldevices having an interface that is compliant with the IOSFspecification, in one embodiment. As further seen, fabric 20 alsointerfaces to a bridge 50. Although not shown for ease of illustrationin the embodiment of FIG. 1, understand that bridge 50 may act as aninterface to other system components, e.g., on the same chip or on oneor more different chips.

As will be described further below, each of the elements shown in FIG.1, namely the fabric, the IP agents, and the bridge may include one ormore interfaces to handle communication of various signals. Theseinterfaces may be defined according to the IOSF specification, whichdefines signals for communication on these interfaces, protocols usedfor information exchange between agents, arbitration and flow controlmechanisms used to initiate and manage information exchange, supportedaddress decoding and translation capabilities, messaging for in-band orout-of-band communication, power management, test, validation and debugsupport.

The IOSF specification includes 3 independent interfaces that can beprovided for each agent, namely a primary interface, a sideband messageinterface and a testability and debug interface (design for test (DFT),design for debug (DFD) interface). According to the IOSF specification,an agent may support any combination of these interfaces. Specifically,an agent can support 0-N primary interfaces, 0-N sideband messageinterfaces, and optional DFx interfaces. However, according to thespecification, an agent must support at least one of these 3 interfaces.

Fabric 20 may be a hardware element that moves data between differentagents. Note that the topology of fabric 20 will be product specific. Asexamples, a fabric can be implemented as a bus, a hierarchical bus, acascaded hub or so forth. Referring now to FIG. 2, shown is a blockdiagram of further details of an interconnect architecture in accordancewith an embodiment of the present invention. As shown in FIG. 2, theIOSF specification defines three distinct fabrics, namely a primaryinterface fabric 112, a DFx fabric 114, and a sideband fabric 116.Primary interface fabric 112 is used for all in-band communicationbetween agents and memory, e.g., between a host processor such as acentral processing unit (CPU) or other processor and an agent. Primaryinterface fabric 112 may further enable communication of peertransactions between agents and supported fabrics. All transaction typesincluding memory, input output (IO), configuration, and in-bandmessaging can be delivered via primary interface fabric 112. Thus theprimary interface fabric may act as a high performance interface fordata transferred between peers and/or communications with upstreamcomponents.

In various implementations, primary interface fabric 112 implements asplit transaction protocol to achieve maximum concurrency. That is, thisprotocol provides for a request phase, a grant phase, and a command anddata phase. Primary interface fabric 112 supports three basic requesttypes: posted, non-posted, and completions, in various embodiments.Generally, a posted transaction is a transaction which when sent by asource is considered complete by the source and the source does notreceive a completion or other confirmation message regarding thetransaction. One such example of a posted transaction may be a writetransaction. In contrast, a non-posted transaction is not consideredcompleted by the source until a return message is received, namely acompletion. One example of a non-posted transaction is a readtransaction in which the source agent requests a read of data.Accordingly, the completion message provides the requested data.

In addition, primary interface fabric 112 supports the concept ofdistinct channels to provide a mechanism for independent data flowsthroughout the system. As will be described further, primary interfacefabric 112 may itself include a master interface that initiatestransactions and a target interface that receives transactions. Theprimary master interface can further be sub-divided into a requestinterface, a command interface, and a data interface. The requestinterface can be used to provide control for movement of a transaction'scommand and data. In various embodiments, primary interface fabric 112may support PCI ordering rules and enumeration.

In turn, sideband interface fabric 116 may be a standard mechanism forcommunicating all out-of-band information. In this way, special-purposewires designed for a given implementation can be avoided, enhancing theability of IP reuse across a wide variety of chips. Thus in contrast toan IP block that uses dedicated wires to handle out-of-bandcommunications such as status, interrupt, power management, fusedistribution, configuration shadowing, test modes and so forth, asideband interface fabric 116 according to the IOSF specificationstandardizes all out-of-band communication, promoting modularity andreducing validation requirements for IP reuse across different designs.In general, sideband interface fabric 116 may be used to communicatenon-performance critical information, rather than for performancecritical data transfers, which typically may be communicated via primaryinterface fabric 112.

As further illustrated in FIG. 2, IP agents 130, 140, and 150 may eachinclude a corresponding primary interface, a sideband interface and aDFx interface. However, as discussed above, each agent need not includeevery one of these interfaces, and a given IP agent may include only asingle interface, in some embodiments.

Using an IOSF specification, various types of chips can be designedhaving a wide variety of different functionality. Referring now to FIG.3, shown is a high level block diagram of a SoC in accordance with anembodiment of the present invention. As shown in FIG. 3, SoC 200 mayinclude various components, all of which can be integrated on a singlesemiconductor die to provide for various processing capabilities at highspeeds and low power, consuming a comparatively small amount of realestate. As seen in FIG. 3, SoC 200 includes a plurality of cores 205₀-205 _(n). In various embodiments, cores 205 can be relatively simplein-order cores or more complex out-of-order cores. Or a combination ofin-order and out-of-order cores can be present in a single SoC. As seen,cores 205 can be interconnected via a coherent interconnect 215, whichfurther couples to a cache memory 210, e.g., a shared last level cache(LLC). Although the scope of the present invention is not limited inthis regard, in one embodiment coherent interconnect 215 may be inaccordance with the Quick Path Interconnect (QPI)™ specificationavailable from Intel Corporation, Santa Clara, Calif.

As further seen in FIG. 3, coherent interconnect 215 may communicate viaa bridge 220 to a fabric 250, which may be an IOSF fabric. Coherentinterconnect 215 may further communicate via an integrated memorycontroller 215 to an off-chip memory (not shown for ease of illustrationthe embodiment of FIG. 3), and further through bridge 230 to fabric 250.

As further seen in FIG. 3, various components can couple to fabric 250including a content processing module (CPM) 240 which can be used forperforming various operations such as security processing, cryptographicfunctions and so forth. In addition, a display processor 245 can be partof a media processing pipeline that renders video for an associateddisplay.

As further seen, fabric 250 may further couple to an IP agent 255.Although only a single agent is shown for ease of illustration in theFIG. 3 embodiment, understand that multiple such agents are possible indifferent embodiments. In addition, to enable communication with otheron-chip devices, fabric 250 may further communicate with a PCIe™controller 260 and a universal serial bus (USB) controller 265, both ofwhich can communicate with various devices according to these protocols.Finally, shown in the embodiment of FIG. 3 is a bridge 270, which can beused to communicate with additional components of other protocols, suchas an OCP or an AMBA protocol. Although shown with these particularcomponents in the embodiment of FIG. 3, understand that the scope of thepresent invention is not limited in this way and in differentembodiments additional or different components may be present.

Furthermore, understand that while shown as a single die SoCimplementation in FIG. 3, embodiments can further be implemented in asystem in which multiple chips communicate with each other via anon-IOSF interface. Referring now to FIG. 4, shown is a block diagram ofa system in accordance with another embodiment of the present invention.As shown in FIG. 4, the system may include a SoC 200′, which may includemany components similar to those discussed above with regard to FIG. 3,and an additional off-die interface 275. Accordingly, SoC 200′ cancommunicate with another chip 280 which may include variousfunctionality to enable communication between these two chips, as wellas to various off-chip devices such as different peripherals accordingto one or more different specifications. Specifically, a second chip 280is shown to include an off-die interface 282 to enable communicationwith SoC 200′, and which in turn communicates with a fabric 290, whichmay be an IOSF fabric according to an embodiment of the presentinvention. As seen, fabric 290 may further be coupled to variouscontrollers in communication with off-chip devices, including a PCIe™controller 292, a USB controller 294, and a bridge 296.

As discussed above, in various embodiments all out-of-bandcommunications may be via a sideband message interface. Referring now toFIG. 5, shown is a block diagram of a sideband interconnection inaccordance with an embodiment of the present invention. As shown in FIG.5, sideband interface system 175 includes multiple routers 180 and 190,which are shown in the embodiment of FIG. 5 as being coupled via apoint-to-point (PTP) interconnect 185. In turn, each router can becoupled to various endpoints, which can be, for example, IP agents orother components of a given system. Specifically, router 180 couples toa plurality of endpoints 186 a-186 e and router 190 couples to aplurality of endpoints 196 x-196 z.

Referring now to FIG. 6, shown is a block diagram of details ofsignaling available for a sideband interface in accordance with anembodiment of the present invention. As shown in FIG. 6, interconnectionbetween a router 180 and an endpoint 186 is shown. As seen, router 180may include a target interface 181 and a master interface 182. Ingeneral, target interface 181 may be configured to receive incomingsignals, while master interface 182 may be configured to transmitoutgoing signals. As seen, endpoint 186 also includes a master interface187 and a target interface 188.

FIG. 6 further shows details of the various signaling available for thesideband interface, including credit information, put information, endof message signaling, and data. Specifically, credit updates can becommunicated via sideband interfaces as a non-posted credit updatesignal (NPCUP) and a posted credit update signal (PCCUP). In addition,put signals may be provided (NPPUT and PCPUT). In addition, an end ofmessage (EOM) signal can be communicated. Finally, data may becommunicated via payload packets which in one embodiment can beimplemented via a byte-wide communication channel. Although shown withthis particular implementation in the embodiment of FIG. 6, the scope ofthe present invention is not limited in this regard. Whenever a creditPut signal is high, this means that a credit is being returned. Whenevera put signal is high, it means that the payload (e.g., data) signal isvalid. Whenever a Put and EOM are high at the same time, it means thatthe current payload is the last payload of the message. Note that theinterface can both “put” a data payload and “put” a credit in the sameclock cycle.

In one embodiment, non-posted write transaction types may includedifferent addressing modes, including a 32-bit address non-posted memorywrite request (NPMWr32) and a 64-bit address non-posted memory writerequest (NPMWr64). These non-posted writes may be configured to use anon-posted flow request type, and will return a single completion (CPL)without data as a response.

In some embodiments, multiple outstanding non-posted write requests maybe allowed. If any ordering is required between posted and non-postedwrites, an agent may be configured to wait for all completions foroutstanding non-posted memory write requests before issuing any postedwrite request. This semantic ensures write-data consistency, asaccording to ordering rules, posted writes may overtake non-postedwrites. Non-posted memory writes may follow the same ordering rules asany other non-posted request, and also follow the same rules as anyother memory transaction.

In an embodiment, non-posted writes may only be sent from a root complexif directed towards a non-PCI-based fabric or device. In all otherPCI-based fabrics such as a PCIe switch fabric or an integrated devicefabric, the non-posted write is not supported. In this case, anon-posted write transaction that is to be routed to a PCI-based fabricthat does not support a non-posted write may be converted or terminatedby a root complex or other non-posted write transaction-aware fabric.

For example, if an agent gives access to a conventional root complexintegrated endpoint that does not support non-posted memory writerequests, a fabric may simply return an unsupported request completion.No changes to an existing agent occur, because an error handler in aprimary fabric can handle this completion.

In another example, an agent may give access to a fabric that does notsupport non-posted memory writes. For example where a PCIe root port maygive access to a PCIe hierarchy, a virtual root port may give access toan integrated device fabric or a legacy primary fabric that does notsupport non-posted memory writes, a bridge agent may map the non-postedmemory write transaction to a posted memory write transaction (e.g.,MWr32 or MWr64), and generate a completion to send to the originalrequester. This ensures interoperability and backwards compatibility.

Using embodiments, third party non-PCI-based IP logics may be morereadily and flexibly integrated into PCI-based clients, servers, anddevices. In addition embodiments may also simplify the design ofPCI-ordered fabrics that implement P/C ordering on multiple channels.With non-posted write transactions being defined and supported for allchannels within supported fabrics and devices, IP logics with additionalvirtual channels for QoS do not have to add any extra handshaking toensure correct handling. As such, embodiments described herein provide anon-posted write transaction capability that is a naturally scalablemechanism for P/C ordering across any channel. As a result, embodimentsmay enhance scalability by supporting both PCI and non-PCI IP logicsthat may implement sophisticated QoS mechanisms.

Embodiments may provide ordering rules that support non-posted writetransactions, as based on PCI ordering rules. For Table 1 below, thecolumns represent a first issued transaction and the rows represent asubsequently issued transaction. The table entry indicates the orderingrelationship between the two transactions.

TABLE 1 Non-Posted Request Read Posted Request Request Write NPR withRow Pass (Col Request Data Completion Column? 2) (Col 3) (Col 4) (Col 5)Posted Request a) No Yes Yes a) Y/N (Row A) b) Y/N b) Yes Non- ReadRequest a) No Y/N Y/N Y/N Posted Write Request b) Y/N Request (Row B)NPR with Data a) No Y/N Y/N Y/N (Row C) b) Y/N Completion a) No Yes Yesa) Y/N (Row D) b) Y/N b) No

In Table 1: a Posted Request is a Memory Write Request or a MessageRequest; a Non-Posted Read Request is a Configuration Read Request, anI/O Read Request, or a Memory Read Request; a Non-Posted Write Requestis a Memory Write Request; an NPR (Non-Posted Request) with Data is aConfiguration Write Request, an I/O Write Request, or an AtomicOpRequest; a Non-Posted Request is a Read Request or an NPR with Data.

Each table entry indicates the ordering relationship between the twotransactions. The table entries are defined as follows: (1) Yes—thesecond transaction (row) must be allowed to pass the first (column) toavoid deadlock. When blocking occurs, the second transaction is requiredto pass the first transaction. Fairness is comprehended to preventstarvation. A message is blocked if there are no credits for thatmessage type; (2) No—the second transaction (row) must not be allowed topass the first (column) transaction; and (3) Y/N—There are norequirements, such that the second transaction may optionally pass thefirst transaction.

Table 2 below provides an explanation of each entry in the above Table1.

TABLE 2 A2a A Posted Request must not pass another Posted Request unlessA2b applies. A2b A Posted Request with RO Set is permitted to passanother Posted Request. A Posted Request with IDO Set is permitted topass another Posted Request if the two Requester IDs are different. A3,A4 A Posted Request must be able to pass Non-Posted Requests to avoiddeadlocks. A5a A Posted Request is permitted to pass a Completion, butis not required to be able to pass Completions unless A5b applies. A5bInside a PCI Express to PCI/PCI-X Bridge whose PCI/PCI-X bus segment isoperating in a conventional PCI mode, for transactions traveling in thePCI Express to PCI direction, a Posted Request must be able to passCompletions to avoid deadlock. B2a A Read or Write Request must not passa Posted Request unless B2b applies. B2b A Read or Write Request withIDO Set is permitted to pass a Posted Request if the two Requester IDsare different. C2a An NPR with Data must not pass a Posted Requestunless C2b applies. C2b An NPR with Data and with RO Set is permitted topass Posted Requests. An NPR with Data and with IDO Set is permitted topass a Posted Request if the two Requester IDs are different. B3, B4, ANon-Posted Request is permitted to pass another Non-Posted Request. C3,C4 B5, C5 A Non-Posted Request is permitted to pass a Completion. D2a ACompletion must not pass a Posted Request unless D2b applies. D2b An I/Oor Configuration Write Completion is permitted to pass a Posted Request.A Completion with RO Set is permitted to pass a Posted Request. ACompletion with IDO Set is permitted to pass a Posted Request if theCompleter ID of the Completion is different from the Requester ID of thePosted Request. D3, D4 A Completion must be able to pass Non-PostedRequests to avoid deadlocks. D5a Completions with different TransactionIDs are permitted to pass each other. D5b Completions with the sameTransaction ID must not pass each other. This ensures that multipleCompletions associated with a single Memory Read Request will remain inascending address order.

Referring now to FIG. 7, shown is a flow diagram of a method inaccordance with an embodiment of the present invention. Morespecifically, method 300 shown in FIG. 7 is a method for generatingnon-posted memory write transactions on a given channel to be outputfrom an agent such as an endpoint, and arbitrating between multiplepending transactions in the agent. As such, method 300 may be performedby hardware circuitry, software, firmware, and/or combinations thereofof a given agent, such as interface circuitry which may include anarbiter to perform at least portions of method 300. As illustrated,method 300 begins by selecting a non-posted write transaction that ispresent within a non-posted queue of the endpoint (block 310). As anexample, a primary interface of the agent, which may be a PCI-based IPlogic that is configured for supporting non-posted memory writetransactions or a non-PCI device having such support, may select thisnon-posted memory write transaction according to various arbitrationtechniques, such as round robin, priority-based arbitration or so forth.Control next passes to block 320 where the non-posted write transactionmay be issued from the endpoint. As one example, this transaction can beissued on a given channel (e.g., a first channel) to an upstream device,such as via direct communication to a fabric or via an intermediatebridge or other device. At this point, this non-posted memory writetransaction is outstanding, and remains outstanding until a completionis received to indicate global observation of this write transaction.

Still with reference to FIG. 7, additional operations may occur withinthe agent. As illustrated, at diamond 330 it may be determined whetherthere is a posted write transaction within a posted queue of theendpoint. If not, control passes to diamond 340 where it may bedetermined whether there is an additional non-posted (read or write)transaction in the non-posted queue of the endpoint. If so, controlpasses back to block 310 where this transaction also can proceed to besent from the agent. That is, one or more non-posted transactions may beissued while one or more non-posted write transactions are outstanding(namely have not yet received a completion).

Still with reference to FIG. 7, instead if it determined that a postedwrite transaction is present in the posted queue, control passes todiamond 350 to determine whether a completion has been received in theendpoint for the non-posted write transaction. If not, this posted writetransaction is to be held until such completion is received. Thus asillustrated, when it is determined that the completion is received,control passes from diamond 350 to block 360 where the posted writetransaction can be selected for output and accordingly at block 370 thisposted write transaction is issued from the endpoint. Note that nofurther processing with regard to the posted write transaction occurs,as there is no completion to later be received when this transaction isglobally observed, as such posted write transactions are fire and forgetoperations. Understand while shown at this high level in the embodimentof FIG. 7, many variations and alternatives are possible.

Referring now to FIG. 8, shown is a flow diagram of a method inaccordance with another embodiment of the present invention. Morespecifically, method 400 shown in FIG. 8 may be performed by hardwarecircuitry, software, firmware and/or combinations thereof. Moreparticularly, method 400 is a method for handling non-posted writes in afabric or other receiving device that is configured to supportnon-posted write transactions. As such, in an embodiment, method 400 maybe performed by control logic of a fabric.

As illustrated, method 400 begins by receiving a non-posted writetransaction in a fabric from an endpoint (block 410). Note that in somecases the endpoint may directly couple to the fabric while in othercases there may be one or more intermediary devices such as a bridge orother device coupled between the endpoint and the fabric. Control nextpasses to diamond 420 to determine whether this non-posted writetransaction is destined for a memory coupled to a non-posted write awaredevice. As described herein, such devices may include a variety ofdifferent PCI-based and non-PCI-based devices that are configured tosupport non-posted write transactions as described herein. If it isdetermined that the transaction is destined for a supported device,control passes to block 430 where the non-posted write transaction isrouted to the device. As an example, this transaction can be routed to amemory controller that in turn is coupled to the memory. In other cases,the transaction can be routed to one or more intermediary devices thatin turn couple to the memory. In any case, control passes to block 440where a completion is received from the device to indicate that thenon-posted memory write transaction has been globally observed.Thereafter at block 450 this completion may be routed to the endpoint.Note that at receipt of this completion at the endpoint, the memorywrite transaction is completed from the point of view of the endpointand thus is no longer outstanding, such that posted write transactionsor other transactions having ordering requirements with respect to thisnon-posted write transaction can proceed.

Still with reference to FIG. 8, instead if it is determined that thenon-posted write transaction is destined for a memory coupled to adevice that is not non-posted write aware, control passes to diamond 460where the fabric determines whether it is permissible to convert thisnon-posted write transaction to a posted write transaction. Thisdetermination may be based on whether the fabric is capable ofconverting the transaction. If not permissible, control passes to block470 where the transaction may be terminated. In some cases, anunsupported message may be sent as a completion back to the requester.Instead if it is determined that conversion is allowed, control passesto block 480, where the transaction can be converted to a posted writetransaction and routed to the device. Still further, understand that thefabric can generate a completion and send this completion back to theendpoint to enable the endpoint to complete its non-posted memory writetransaction (block 490). Note that this completion may be generated atthe last possible place such as before egress on the port connected tothe agent that does not support the non-posted memory write transaction.Understand while shown at this high level in the embodiment of FIG. 8,many variations and alternatives are possible.

Referring now to FIG. 9, shown is a block diagram of an example systemwith which embodiments may be used. In the illustration of FIG. 9,system 1300 may be a mobile low-power system such as a tablet computer,2:1 tablet, phablet or other convertible or standalone tablet system. Asillustrated, a SoC 1310 is present and may be configured to operate asan application processor for the device. SoC 1310 may include agents andfabrics to support non-posted memory write transactions within a PCIcontext as described herein.

A variety of devices may couple to SoC 1310. In the illustration shown,a memory subsystem includes a flash memory 1340 and a DRAM 1345 coupledto SoC 1310. In addition, a touch panel 1320 is coupled to the SoC 1310to provide display capability and user input via touch, includingprovision of a virtual keyboard on a display of touch panel 1320. Toprovide wired network connectivity, SoC 1310 couples to an Ethernetinterface 1330. A peripheral hub 1325 is coupled to SoC 1310 to enableinterfacing with various peripheral devices, such as may be coupled tosystem 1300 by any of various ports or other connectors.

In addition to internal power management circuitry and functionalitywithin SoC 1310, a PMIC 1380 is coupled to SoC 1310 to provideplatform-based power management, e.g., based on whether the system ispowered by a battery 1390 or AC power via an AC adapter 1395. Inaddition to this power source-based power management, PMIC 1380 mayfurther perform platform power management activities based onenvironmental and usage conditions. Still further, PMIC 1380 maycommunicate control and status information to SoC 1310 to cause variouspower management actions within SoC 1310.

Still referring to FIG. 9, to provide for wireless capabilities, a WLANunit 1350 is coupled to SoC 1310 and in turn to an antenna 1355. Invarious implementations, WLAN unit 1350 may provide for communicationaccording to one or more wireless protocols.

As further illustrated, a plurality of sensors 1360 may couple to SoC1310. These sensors may include various accelerometer, environmental andother sensors, including user gesture sensors. Finally, an audio codec1365 is coupled to SoC 1310 to provide an interface to an audio outputdevice 1370. Of course understand that while shown with this particularimplementation in FIG. 9, many variations and alternatives are possible.

Referring now to FIG. 10, shown is a block diagram of a representativecomputer system such as notebook, Ultrabook™ or other small form factorsystem. A processor 1410, in one embodiment, includes a microprocessor,multi-core processor, multithreaded processor, an ultra low voltageprocessor, an embedded processor, or other known processing element. Inthe illustrated implementation, processor 1410 acts as a main processingunit and central hub for communication with many of the variouscomponents of the system 1400, and may include power managementcircuitry as described herein. As one example, processor 1410 isimplemented as a SoC, and may include agents and fabrics that supportnon-posted memory write transactions as described herein. Processor1410, in one embodiment, communicates with a system memory 1415. As anillustrative example, the system memory 1415 is implemented via multiplememory devices or modules to provide for a given amount of systemmemory.

To provide for persistent storage of information such as data,applications, one or more operating systems and so forth, a mass storage1420 may also couple to processor 1410. In various embodiments, toenable a thinner and lighter system design as well as to improve systemresponsiveness, this mass storage may be implemented via a SSD or themass storage may primarily be implemented using a hard disk drive (HDD)with a smaller amount of SSD storage to act as a SSD cache to enablenon-volatile storage of context state and other such information duringpower down events so that a fast power up can occur on re-initiation ofsystem activities. Also shown in FIG. 10, a flash device 1422 may becoupled to processor 1410, e.g., via a serial peripheral interface(SPI). This flash device may provide for non-volatile storage of systemsoftware, including a basic input/output software (BIOS) as well asother firmware of the system.

Various input/output (I/O) devices may be present within system 1400.Specifically shown in the embodiment of FIG. 10 is a display 1424 whichmay be a high definition LCD or LED panel that further provides for atouch screen 1425. In one embodiment, display 1424 may be coupled toprocessor 1410 via a display interconnect that can be implemented as ahigh performance graphics interconnect. Touch screen 1425 may be coupledto processor 1410 via another interconnect, which in an embodiment canbe an I²C interconnect. As further shown in FIG. 10, in addition totouch screen 1425, user input by way of touch can also occur via a touchpad 1430 which may be configured within the chassis and may also becoupled to the same I²C interconnect as touch screen 1425.

For perceptual computing and other purposes, various sensors may bepresent within the system and may be coupled to processor 1410 indifferent manners. Certain inertial and environmental sensors may coupleto processor 1410 through a sensor hub 1440, e.g., via an I²Cinterconnect. In the embodiment shown in FIG. 10, these sensors mayinclude an accelerometer 1441, an ambient light sensor (ALS) 1442, acompass 1443 and a gyroscope 1444. Other environmental sensors mayinclude one or more thermal sensors 1446 which in some embodimentscouple to processor 1410 via a system management bus (SMBus) bus.

Also seen in FIG. 10, various peripheral devices may couple to processor1410 via a low pin count (LPC) interconnect. In the embodiment shown,various components can be coupled through an embedded controller 1435.Such components can include a keyboard 1436 (e.g., coupled via a PS2interface), a fan 1437, and a thermal sensor 1439. In some embodiments,touch pad 1430 may also couple to EC 1435 via a PS2 interface. Inaddition, a security processor such as a trusted platform module (TPM)1438 may also couple to processor 1410 via this LPC interconnect.

System 1400 can communicate with external devices in a variety ofmanners, including wirelessly. In the embodiment shown in FIG. 10,various wireless modules, each of which can correspond to a radioconfigured for a particular wireless communication protocol, arepresent. One manner for wireless communication in a short range such asa near field may be via a NFC unit 1445 which may communicate, in oneembodiment with processor 1410 via an SMBus. Note that via this NFC unit1445, devices in close proximity to each other can communicate.

As further seen in FIG. 10, additional wireless units can include othershort range wireless engines including a WLAN unit 1450 and a Bluetooth™unit 1452. Using WLAN unit 1450, Wi-Fi™ communications can be realized,while via Bluetooth™ unit 1452, short range Bluetooth™ communicationscan occur. These units may communicate with processor 1410 via a givenlink.

In addition, wireless wide area communications, e.g., according to acellular or other wireless wide area protocol, can occur via a WWAN unit1456 which in turn may couple to a subscriber identity module (SIM)1457. In addition, to enable receipt and use of location information, aGPS module 1455 may also be present. Note that in the embodiment shownin FIG. 10, WWAN unit 1456 and an integrated capture device such as acamera module 1454 may communicate via a given link.

To provide for audio inputs and outputs, an audio processor can beimplemented via a digital signal processor (DSP) 1460, which may coupleto processor 1410 via a high definition audio (HDA) link. Similarly, DSP1460 may communicate with an integrated coder/decoder (CODEC) andamplifier 1462 that in turn may couple to output speakers 1463 which maybe implemented within the chassis. Similarly, amplifier and CODEC 1462can be coupled to receive audio inputs from a microphone 1465 which inan embodiment can be implemented via dual array microphones (such as adigital microphone array) to provide for high quality audio inputs toenable voice-activated control of various operations within the system.Note also that audio outputs can be provided from amplifier/CODEC 1462to a headphone jack 1464. Although shown with these particularcomponents in the embodiment of FIG. 10, understand the scope of thepresent invention is not limited in this regard.

Embodiments may be implemented in many different system types. Referringnow to FIG. 11, shown is a block diagram of a system in accordance withan embodiment of the present invention. As shown in FIG. 11,multiprocessor system 1500 is a point-to-point interconnect system, andincludes a first processor 1570 and a second processor 1580 coupled viaa point-to-point interconnect 1550. As shown in FIG. 11, each ofprocessors 1570 and 1580 may be multicore processors, including firstand second processor cores (i.e., processor cores 1574 a and 1574 b andprocessor cores 1584 a and 1584 b), although potentially many more coresmay be present in the processors. Each of the processors can include aPCU (1575, 1585) or other power management logic to performprocessor-based power management. Such processors may further beconfigured to handle non-posted memory write transactions within a PCIcontext as described herein.

Still referring to FIG. 11, first processor 1570 further includes amemory controller hub (MCH) 1572 and point-to-point (P-P) interfaces1576 and 1578. Similarly, second processor 1580 includes a MCH 1582 andP-P interfaces 1586 and 1588. As shown in FIG. 10, MCH's 1572 and 1582couple the processors to respective memories, namely a memory 1532 and amemory 1534, which may be portions of system memory (e.g., DRAM) locallyattached to the respective processors. First processor 1570 and secondprocessor 1580 may be coupled to a chipset 1590 via P-P interconnects1562 and 1564, respectively. As shown in FIG. 11, chipset 1590 includesP-P interfaces 1594 and 1598.

Furthermore, chipset 1590 includes an interface 1592 to couple chip set1590 with a high performance graphics engine 1538, by a P-P interconnect1539. In turn, chipset 1590 may be coupled to a first bus 1516 via aninterface 1596. As shown in FIG. 10, various input/output (I/O) devices1514 may be coupled to first bus 1516, along with a bus bridge 1518which couples first bus 1516 to a second bus 1520. Various devices maybe coupled to second bus 1520 including, for example, a keyboard/mouse1522, communication devices 1526 and a data storage unit 1528 such as adisk drive or other mass storage device which may include code 1530, inone embodiment. Further, an audio I/O 1524 may be coupled to second bus1520. Embodiments can be incorporated into other types of systemsincluding mobile devices such as a smart cellular telephone, tabletcomputer, netbook, Ultrabook™, or so forth.

The following Examples pertain to further embodiments.

In one example, a SoC is formed with a semiconductor die including: aplurality of agents including a first endpoint to issue a non-postedmemory write transaction to a memory; and a fabric to couple theplurality of agents, the fabric including a primary interface having aplurality of channels, the fabric comprising a PCI-based fabric, thefabric including control logic to direct the non-posted memory writetransaction to the memory, receive a completion for the non-postedmemory write transaction from the memory and route the completion to thefirst endpoint.

In an example, the first endpoint is to wait for receipt of thecompletion before issuance of a posted write transaction, to ensurewrite-data consistency.

In an example, the completion does not include data.

In an example, the fabric is to receive the non-posted memory writetransaction via a first channel of the first endpoint and direct thenon-posted memory write transaction to the memory via a first channel ofthe fabric mapped to the first channel of the first endpoint.

In an example, first endpoint is to issue a second non-posted memorywrite transaction while the non-posted memory write transaction isoutstanding.

In an example, the first endpoint is to wait for receipt of a secondcompletion for the second non-posted memory write transaction beforeissuance of a posted write transaction, to ensure write-dataconsistency.

In an example, the first endpoint comprises a non-PCI logic to nativelysupport the non-posted write transaction.

In an example, the fabric comprises an integrated on-chip system fabric,where a protocol of the integrated on-chip system fabric does notnatively support non-posted memory write transactions.

In an example, the fabric is to convert the non-posted memory writetransaction to a posted write transaction and send the posted writetransaction to a PCI-based fabric that does not support the non-postedmemory write transaction.

In an example, the fabric is to forward the non-posted memory writetransaction to a second fabric comprising a non-PCI-based fabric thatnatively supports non-posted memory write transactions.

In an example, the fabric is to prevent the non-posted memory writetransaction from passing a posted write transaction.

In another example, a method comprises: sending a non-posted memorywrite transaction from an endpoint of a SoC to a primary fabric of theSoC to enable the primary fabric to direct the non-posted writetransaction to a memory coupled to the SoC, the endpoint comprising aPCI-based endpoint and the primary fabric to support PCI ordering rules;when a posted write transaction is present in a posted queue of theendpoint, determining whether the endpoint has received a completion forthe non-posted memory write transaction; and preventing the posted writetransaction from being sent from the endpoint to the primary fabricuntil determining that the endpoint has received the completion for thenon-posted memory write transaction.

In an example, the method further comprises sending a second non-postedmemory write transaction from the endpoint to the primary fabric beforethe endpoint receives the completion for the non-posted memory writetransaction.

In an example, the method further comprises sending a plurality ofnon-posted memory write transactions from the endpoint to the primaryfabric, while one or more prior non-posted memory write transactionssent by the endpoint are outstanding.

In an example, the method further comprises: sending a second non-postedmemory write transaction from a second endpoint of the SoC to theprimary fabric, the second endpoint comprising a non-PCI-based IP logicand the primary fabric comprising a PCI-based fabric configured tosupport non-posted memory write transactions.

In an example, the method further comprises: receiving a secondnon-posted memory write transaction in the endpoint from a requester;converting the second non-posted memory write transaction to a postedwrite transaction and sending the posted write transaction to a secondfabric coupled to the endpoint, the second fabric comprising a PCI-basedfabric not configured to support non-posted memory write transactions;and sending a completion for the second non-posted memory writetransaction to the requester.

In another example, a computer readable medium including instructions isto perform the method of any of the above examples.

In another example, a computer readable medium including data is to beused by at least one machine to fabricate at least one integratedcircuit to perform the method of any one of the above examples.

In another example, an apparatus comprises means for performing themethod of any one of the above examples.

In yet another example, a system comprises: a SoC and a memory coupledto the SoC. The SoC may comprise: one or more cores to executeinstructions; a coherent interconnect coupled to the one or more cores;a memory controller coupled to the coherent interconnect; a plurality ofagents including: a first endpoint to issue a non-posted memory writetransaction, the first endpoint comprising a PCI-based endpoint; asecond non-PCI-based endpoint to issue a second non-posted memory writetransaction; and a fabric to couple at least some of the plurality ofagents, the fabric including control logic to direct at least the firstnon-posted memory write transaction to a memory, receive a firstcompletion for the first non-posted memory write transaction and routethe first completion to the first endpoint.

In an example, the second endpoint comprises a third party IP logic.

In an example, the fabric is to forward the second non-posted memorywrite transaction to a second fabric, the second fabric comprising anon-PCI-based fabric.

In an example, the first endpoint is to issue another non-posted memorywrite transaction while the first non-posted memory write transaction isoutstanding, and prevent issuance of a posted write transaction untilthe first endpoint has received the completion and another completionfor the another non-posted memory write transaction.

In a still further example, an apparatus comprises: means for sending anon-posted memory write transaction from an endpoint to a primary fabricto enable the primary fabric to direct the non-posted write transactionto a memory, the endpoint comprising a PCI-based endpoint and theprimary fabric to support PCI ordering rules; means for determiningwhether the endpoint has received a completion for the non-posted memorywrite transaction; and means for preventing a posted write transactionstored in a posted queue of the endpoint from being sent from theendpoint to the primary fabric until the endpoint has received thecompletion for the non-posted memory write transaction.

In an example, the apparatus further comprises means for sending asecond non-posted memory write transaction from the endpoint to theprimary fabric before the endpoint receives the completion for thenon-posted memory write transaction.

In an example, the apparatus further comprises means for sending aplurality of non-posted memory write transactions from the endpoint tothe primary fabric, while one or more prior non-posted memory writetransactions sent by the endpoint are outstanding.

In an example, the apparatus further comprises means for sending asecond non-posted memory write transaction from a second endpoint to theprimary fabric, the second endpoint comprising a non-PCI-based IP logicand the primary fabric comprising a PCI-based fabric configured tosupport non-posted memory write transactions.

In an example, the apparatus further comprises: means for receiving asecond non-posted memory write transaction in the endpoint from arequester; means for converting the second non-posted memory writetransaction to a posted write transaction and sending the posted writetransaction to a second fabric coupled to the endpoint, the secondfabric comprising a PCI-based fabric not configured to supportnon-posted memory write transactions; and means for sending a completionfor the second non-posted memory write transaction to the requester.

Understand that various combinations of the above examples are possible.

Note that the terms “circuit” and “circuitry” are used interchangeablyherein. As used herein, these terms and the term “logic” are used torefer to alone or in any combination, analog circuitry, digitalcircuitry, hard wired circuitry, programmable circuitry, processorcircuitry, microcontroller circuitry, hardware logic circuitry, statemachine circuitry and/or any other type of physical hardware component.Embodiments may be used in many different types of systems. For example,in one embodiment a communication device can be arranged to perform thevarious methods and techniques described herein. Of course, the scope ofthe present invention is not limited to a communication device, andinstead other embodiments can be directed to other types of apparatusfor processing instructions, or one or more machine readable mediaincluding instructions that in response to being executed on a computingdevice, cause the device to carry out one or more of the methods andtechniques described herein.

Embodiments may be implemented in code and may be stored on anon-transitory storage medium having stored thereon instructions whichcan be used to program a system to perform the instructions. Embodimentsalso may be implemented in data and may be stored on a non-transitorystorage medium, which if used by at least one machine, causes the atleast one machine to fabricate at least one integrated circuit toperform one or more operations. Still further embodiments may beimplemented in a computer readable storage medium including informationthat, when manufactured into a SoC or other processor, is to configurethe SoC or other processor to perform one or more operations. Thestorage medium may include, but is not limited to, any type of diskincluding floppy disks, optical disks, solid state drives (SSDs),compact disk read-only memories (CD-ROMs), compact disk rewritables(CD-RWs), and magneto-optical disks, semiconductor devices such asread-only memories (ROMs), random access memories (RAMs) such as dynamicrandom access memories (DRAMs), static random access memories (SRAMs),erasable programmable read-only memories (EPROMs), flash memories,electrically erasable programmable read-only memories (EEPROMs),magnetic or optical cards, or any other type of media suitable forstoring electronic instructions.

While the present invention has been described with respect to a limitednumber of embodiments, those skilled in the art will appreciate numerousmodifications and variations therefrom. It is intended that the appendedclaims cover all such modifications and variations as fall within thetrue spirit and scope of this present invention.

What is claimed is:
 1. A system on chip (SoC) comprising: asemiconductor die including: a plurality of agents including a firstendpoint to issue a non-posted memory write transaction to a memory; anda fabric to couple the plurality of agents, the fabric including aprimary interface having a plurality of channels, the fabric comprisinga Peripheral Component Interconnect (PCI)-based fabric, the fabricincluding control logic to direct the non-posted memory writetransaction to the memory, receive a completion for the non-postedmemory write transaction from the memory and route the completion to thefirst endpoint.
 2. The SoC of claim 1, wherein the first endpoint is towait for receipt of the completion before issuance of a posted writetransaction, to ensure write-data consistency.
 3. The SoC of claim 2,wherein the completion does not include data.
 4. The SoC of claim 1,wherein the fabric is to receive the non-posted memory write transactionvia a first channel of the first endpoint and direct the non-postedmemory write transaction to the memory via a first channel of the fabricmapped to the first channel of the first endpoint.
 5. The SoC of claim1, wherein the first endpoint is to issue a second non-posted memorywrite transaction while the non-posted memory write transaction isoutstanding.
 6. The SoC of claim 5, wherein the first endpoint is towait for receipt of a second completion for the second non-posted memorywrite transaction before issuance of a posted write transaction, toensure write-data consistency.
 7. The SoC of claim 1, wherein the firstendpoint comprises a non-PCI logic to natively support the non-postedwrite transaction.
 8. The SoC of claim 1, wherein the fabric comprisesan integrated on-chip system fabric, wherein a protocol of theintegrated on-chip system fabric does not natively support non-postedmemory write transactions.
 9. The SoC of claim 1, wherein the fabric isto convert the non-posted memory write transaction to a posted writetransaction and send the posted write transaction to a PCI-based fabricthat does not support the non-posted memory write transaction.
 10. TheSoC of claim 1, wherein the fabric is to forward the non-posted memorywrite transaction to a second fabric comprising a non-PCI-based fabricthat natively supports non-posted memory write transactions.
 11. The SoCof claim 1, wherein the fabric is to prevent the non-posted memory writetransaction from passing a posted write transaction.
 12. Amachine-readable medium having stored thereon instructions, which ifperformed by a system on chip (SoC) cause the SoC to perform a methodcomprising: sending a non-posted memory write transaction from anendpoint of the SoC to a primary fabric of the SoC to enable the primaryfabric to direct the non-posted write transaction to a memory coupled tothe SoC, the endpoint comprising a Peripheral Component Interconnect(PCI)-based endpoint and the primary fabric to support PCI orderingrules; when a posted write transaction is present in a posted queue ofthe endpoint, determining whether the endpoint has received a completionfor the non-posted memory write transaction; and preventing the postedwrite transaction from being sent from the endpoint to the primaryfabric until determining that the endpoint has received the completionfor the non-posted memory write transaction.
 13. The machine-readablemedium of claim 12, wherein the method further comprises sending asecond non-posted memory write transaction from the endpoint to theprimary fabric before the endpoint receives the completion for thenon-posted memory write transaction.
 14. The machine-readable medium ofclaim 12, wherein the method further comprises sending a plurality ofnon-posted memory write transactions from the endpoint to the primaryfabric, while one or more prior non-posted memory write transactionssent by the endpoint are outstanding.
 15. The machine-readable medium ofclaim 12, wherein the method further comprises: sending a secondnon-posted memory write transaction from a second endpoint of the SoC tothe primary fabric, the second endpoint comprising a non-PCI-basedintellectual property (IP) logic and the primary fabric comprising aPCI-based fabric configured to support non-posted memory writetransactions.
 16. The machine-readable medium of claim 12, wherein themethod further comprises: receiving a second non-posted memory writetransaction in the endpoint from a requester; converting the secondnon-posted memory write transaction to a posted write transaction andsending the posted write transaction to a second fabric coupled to theendpoint, the second fabric comprising a PCI-based fabric not configuredto support non-posted memory write transactions; and sending acompletion for the second non-posted memory write transaction to therequester.
 17. A system comprising: a system on chip (SoC) comprising:one or more cores to execute instructions; a coherent interconnectcoupled to the one or more cores; a memory controller coupled to thecoherent interconnect; a plurality of agents including: a first endpointto issue a non-posted memory write transaction, the first endpointcomprising a Peripheral Component Interconnect (PCI)-based endpoint; asecond non-PCI-based endpoint to issue a second non-posted memory writetransaction; and a fabric to couple at least some of the plurality ofagents, the fabric including control logic to direct at least the firstnon-posted memory write transaction to a memory, receive a firstcompletion for the first non-posted memory write transaction and routethe first completion to the first endpoint; and the memory coupled tothe SoC.
 18. The system of claim 17, wherein the second endpointcomprises a third party intellectual property (IP) logic.
 19. The systemof claim 18, wherein the fabric is to forward the second non-postedmemory write transaction to a second fabric, the second fabriccomprising a non-PCI-based fabric.
 20. The system of claim 17, whereinthe first endpoint is to issue another non-posted memory writetransaction while the first non-posted memory write transaction isoutstanding, and prevent issuance of a posted write transaction untilthe first endpoint has received the completion and another completionfor the another non-posted memory write transaction.